import axios from 'axios';
import { getSessionToken, getToken } from './token'; // 引入token
import { showMessage } from './status';     // 引入状态码文件
import { ElMessage } from 'element-plus';

// 设置请求格式
const service = axios.create({
    baseURL: 'http://localhost:3000/', // 基础URL
    timeout: 30000, // 超时时间30s
    headers: { 'Content-Type': 'application/x-www-form-urlencoded;' },   // 传参方式表单
})

// 请求拦截器
service.interceptors.request.use(
    (config) => {
        // 设置请求头
        config.headers = {
            'Authorization': getToken('token') || getSessionToken('token')   // 身份认证
        }
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
)

// 响应拦截器
service.interceptors.response.use(
    (response) => {
        const status = response.data.status; // 接收状态值
        const message = response.data.message;
        if (status === 0) {
            ElMessage.success(message);
            return response;
        } else {
            ElMessage.error(message);
            return Promise.reject(new Error('Error'));
        }
    },
    (error) => {
        const { response } = error;
        if (response) {
            // 状态码不在 200 的范围内
            showMessage(response.status);   // 传入响应码，匹配对应的响应码信息
            return Promise.reject(response.data);
        } else {
            ElMessage.error("网络连接异常，请稍后再试！");
        }
        return Promise.reject(error.message);
    }
)

export default service